First-person shooter (FPS) games, massively multiplayer online games (MMOG), and other networked games frequently include automated computer players, or “bots”, in addition to human players. The presence of bots in a game is intended to make the game more enjoyable for the human players. However, it is widely recognized that bots play worse than if they were controlled by state-of-the art artificial intelligence (AI). This is largely because the AI that controls each bot must be kept very lightweight and simple, so as to avoid overwhelming the computational resources of the gaming server. Games would be more enjoyable, and therefore more attractive to potential players, if bots could be made more intelligent.
FIG. 1 shows a conventional online gaming system 100 in which the gaming server runs multiple AIs controlling multiple bots in a game. It is common for gamers to complain of monsters 102, 104 that are so stupid as to make the game unchallenging and rather unentertaining. Current gaming AIs exhibit astonishingly simple behavior. When unaware of nearby players, a typical monster 102 either waits in a delineated region or roams along a predetermined path. When a player comes within a defined distance, the monster 102 launches a direct attack. When severely wounded, some monsters 102 will fight to the death, whereas others will try to retreat via a simple path. FIG. 1 shows two AIs, AI 1 and AI 2, running on the gaming server. Because the gaming server performs all of the AI computations for every bot in the game, as well as centrally managing all of the game state, the performance of the AIs is quite limited.
Despite popular belief, the fundamental problem is not that game developers cannot write better AI algorithms; rather, the problem is that the servers that host MMOGs have insufficient computing power to support the computational demands of thousands of even moderately sophisticated, concurrently running AIs. Adding more back-end server resources could solve the problem, but at a cost that would be prohibitive given MMOG operations economics.
Sophisticated AI calculations can be offloaded to clients only if several issues are addressed, including the availability of client CPU capacity, communication latency between clients and the server, the possible failure of client machines, and the risk of client exploitation.
Offloading computation to a client may induce a substantial communication delay, as work that was previously performed in the server's main loop is now distributed to clients, processed on those clients, and sent back to the server. Round-trip latency between access networks can reach 400 ms, and a 56K-dialup access network can add as much as 500 ms more. Although some aspects of AI, such as high-level strategic planning, may tolerate latencies that approach one second, it is not clear whether tactical-level AI can satisfactorily cope with such a network delay.
Client machines can also fail in various ways. They may crash or spontaneously reboot; network problems can cause intermittent disconnection; players may abruptly quit the game; or a competing client application might become active and leave little available CPU. Thus, the server cannot afford to rely on any particular client to perform any given computation.
Furthermore, in the absence of a secured execution platform, AI code that runs on a client machine can be modified by the machine's owner. The owner might weaken the AI to make monsters stupid and easy to kill, or strengthen the AI to make monsters smarter and readily able to kill competing players. The server cannot safely assume that clients will calculate results honestly.